package com.yupi.yuoj.model.vo;

import com.yupi.yuoj.model.entity.ContentRecommendation;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;
import org.springframework.beans.BeanUtils;

/**
 * 内容推荐视图
 *
 * @author jingjin
 */
@Data
public class ContentRecommendationVO implements Serializable {

    /**
     * id
     */
    private Long id;

    /**
     * 内容 id
     */
    private Long contentId;

    /**
     * 相关内容 id
     */
    private Long relatedContentId;

    /**
     * 关联类型：similar-相似内容，series-系列内容，prerequisite-前置内容
     */
    private String relationType;

    /**
     * 推荐分数
     */
    private BigDecimal score;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 内容信息
     */
    private ContentVO content;

    /**
     * 相关内容信息
     */
    private ContentVO relatedContent;

    /**
     * 关联类型文本
     */
    private String relationTypeText;

    /**
     * 包装类转对象
     *
     * @param contentRecommendationVO
     * @return
     */
    public static ContentRecommendation voToObj(ContentRecommendationVO contentRecommendationVO) {
        if (contentRecommendationVO == null) {
            return null;
        }
        ContentRecommendation contentRecommendation = new ContentRecommendation();
        contentRecommendation.setId(contentRecommendationVO.getId());
        contentRecommendation.setContent_id(contentRecommendationVO.getContentId());
        contentRecommendation.setRelated_content_id(contentRecommendationVO.getRelatedContentId());
        contentRecommendation.setRelation_type(contentRecommendationVO.getRelationType());
        contentRecommendation.setScore(contentRecommendationVO.getScore());
        contentRecommendation.setCreate_time(contentRecommendationVO.getCreateTime());
        return contentRecommendation;
    }

    /**
     * 对象转包装类
     *
     * @param contentRecommendation
     * @return
     */
    public static ContentRecommendationVO objToVo(ContentRecommendation contentRecommendation) {
        if (contentRecommendation == null) {
            return null;
        }
        ContentRecommendationVO contentRecommendationVO = new ContentRecommendationVO();
        contentRecommendationVO.setId(contentRecommendation.getId());
        contentRecommendationVO.setContentId(contentRecommendation.getContent_id());
        contentRecommendationVO.setRelatedContentId(contentRecommendation.getRelated_content_id());
        contentRecommendationVO.setRelationType(contentRecommendation.getRelation_type());
        contentRecommendationVO.setScore(contentRecommendation.getScore());
        contentRecommendationVO.setCreateTime(contentRecommendation.getCreate_time());
        
        // 设置关联类型文本
        if (contentRecommendation.getRelation_type() != null) {
            switch (contentRecommendation.getRelation_type()) {
                case "similar":
                    contentRecommendationVO.setRelationTypeText("相似内容");
                    break;
                case "series":
                    contentRecommendationVO.setRelationTypeText("系列内容");
                    break;
                case "prerequisite":
                    contentRecommendationVO.setRelationTypeText("前置内容");
                    break;
                default:
                    contentRecommendationVO.setRelationTypeText("其他");
                    break;
            }
        }
        
        return contentRecommendationVO;
    }

    private static final long serialVersionUID = 1L;
}